package org.abc.fund.entity.combination; // 请确保包名正确

import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.abc.fund.entity.combination.CombinationProduct;

/**
 * 组合产品持仓实体类
 * 职责：精确映射数据库中的 'combination_holdings' 表结构。
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Entity
@Table(name = "combination_holdings")
public class CombinationHolding {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    /**
     * 定义与 CombinationProduct 的多对一关系。
     * * - fetch = FetchType.LAZY:
     * 同样设置为“懒加载”。当查询一个 Holding 时，不会立刻加载其关联的 Product。
     * 这在很多场景下可以提升性能。
     */
    @ManyToOne(fetch = FetchType.LAZY)
    // @JoinColumn 指明这个关系是通过本表中的 'combination_product_id' 外键列来维护的。
    @JoinColumn(name = "combination_product_id")
    // 注意：不再需要 @JsonBackReference 注解。
    private CombinationProduct combinationProduct;

    @Column(name = "fund_code", nullable = false)
    private String fundCode;

    @Column(nullable = false)
    private Double percentage;
}